package cn.itsuorce.service;


import cn.itsuorce.query.BaseQuery;
import cn.itsuorce.utils.Page;

import java.util.List;

public interface IBaseService <T,Q extends BaseQuery>{
    /**
     * 新增
     * @param t
     */
    void save(T t);


    /**
     * 根据主键删除
     * @param id
     */
    void delete(Long id);

    /**
     * 查询所有，支持高级查询条件
     * @param q
     * @return
     */
    List<T> findAll(Q q);

    /**
     * 根据主键查询一个
     * @param id
     * @return
     */
    T findOne(Long id);

    /**
     * 分页查询：查询总行数
     * @param q
     * @return
     */
    Long findTotal(Q q);

    /**
     * 分页查询：查询当前页的数据集合
     * @param q
     * @return
     */
    Page<T> findPage(Q q);

    /**
     * 批量删除
     * @param ids
     */
    void batchRemove(List<Long> ids);
}
